home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / man / cat.1 / clca.1 < prev    next >
Text File  |  1995-07-25  |  6KB  |  97 lines

  1.     CLCA: Color Linear Cellular Automata    by  John H. DuBois III
  2. Usage: clca [-a<argfile>] [-b<background>] [-g<generations>] [-i<init values>]
  3.             [-m<mutation period>] [-p<palette>] [-r<rules>] [-s] [-w<width>]
  4.    This program calculates and displays succeeding generations of linear
  5. cellular automata.  LCA are related to the Game of Life, but are one- rather
  6. than two-dimensional.  Also, while in the Game of Life each cell is in one
  7. of two states (alive or dead), LCA may have many states.  In this
  8. implementation, the number of states is set to four since that is the number of
  9. colors that can be simultaneously displayed on a CGA monitor in medium-
  10. resolution mode.  To use this program you must have a CGA display.
  11.    The state of each cell is refered to here as its value.  Each cell has a
  12. value between zero and three.  To find the value of the cell in the next
  13. generation, its current value and the current values of the cells on either
  14. side are added together.  The result is used to select a "rule".  There is one
  15. rule for each possible result.  Thus, since each cell has four possible values
  16. (0-3), the sum of the three cells will be between 0 and 9, and there are ten
  17. rules.  Each rule is a value which will be the new value of the cell.  For
  18. example, if the values of a cell, its left neighbor, and it right neighbor are
  19. 2, 0, and 3, and the value of rule 5 is 1, then the value of the cell in the
  20. next generation will be 1.  The cells are arranged in a circular configuration;
  21. that is, the leftmost and rightmost cells are taken to be neighbors.
  22.    To display the cells, a color is associated with each value, and a
  23. generation of cells is displayed as a row of pixels.  Succeeding generations of
  24. cells are printed on succeeding rows.  The two- dimentional, ongoing pattern
  25. produced by succeeding generations of cells can be extremely interesting.
  26.    The following arguments are used to determine the nature of the LCA and the
  27. way they are displayed.  In all cases the initial '-' is optional.
  28.    -p<palette> : p is followed by 0 or 1, to select the corresponding palette.
  29. The colors associated with each cell value for the two palettes are these:
  30. Palette 0: 0 = background color; 1 = Green; 2 = Red; 3 = Brown.
  31. Palette 1: 0 = background color; 1 = Cyan; 2 = Magenta; 3 = White.
  32. The default palette is 1.
  33.    -b<background> : b is followed by a number from 0 to 15, to select the
  34. background color.  The background colors are these:
  35. 0 = black; 1 = blue; 2 = green; 3 = cyan; 4 = red; 5 = magenta; 6 = brown;
  36. 7 = light grey; 8 = dark grey; 9 = light blue; 10 = light green; 
  37. 11 = light cyan; 12 = light red; 13 = light magenta; 14 = yellow; 15 = white.
  38. The default background is 8 (dark grey).
  39.    -r<rules> : r is followed by a series of integers between 0 and 3,
  40. optionally separated by commas.  The leftmost number should be the value of
  41. rule 0; the next, the value of rule 1, etc.  10 rules should be given.  If less
  42. than 10 rules are given, the unspecified rules will be given a value of 0.  If
  43. -r is not given, the rules are initialized to random values.
  44.    -w<width> : width should be an integer between 1 and 320, specifying the
  45. number of cells.  The default is 320, which is the number of pixels across the
  46. screen.
  47.    -i<init values> : The initial values of the cells can be given as a string
  48. of integers, in the same manner that the rules are.  If fewer values are given
  49. than there are cells, the unspecified cells will be given a value of 0.  If
  50. this argument is not given, the cells are initialized randomly.
  51.    -g<generations> : The number of generations to produce (and thus rows to
  52. print).  If this argument is not given, the program will continue until halted.
  53.    -m<mutation period> : <mutation period> should be an integer.  The rules
  54. will be replaced with a new random set each time that the specified period
  55. (number of generations) has elapsed.  The default is 200, so that one screenful
  56. of generations will be printed between mutations.  If 0 is specified, no
  57. mutations will occur.  Each time a mutation occurs, the cells are checked to
  58. determine whether they are all identical.  If they are, the value of the middle
  59. cell is changed, in order to begin an interesting sequence again.
  60.  
  61.    -s : If this argument is given, scrolling will be turned on.  After the
  62. screen has initially been filled with generations of cells, each new generation
  63. will be printed at the bottom and the screen will be scrolled up accordingly.
  64. If this argument is not given, printing of new cells will start at the top
  65. again.  Scroll mode is much slower than noscroll mode.
  66.    -a<argfile> : -a can be used to specify a file containing lines of arguments
  67. of the same form as the command line arguments.  Each line specifies an
  68. 'environment'.  Each environment is used for the number of generations
  69. specified, then the next environment is used.  When the last environment has
  70. been used, the first is used again, etc.  Note that if any environment does not
  71. include a -g argument, it will be used indefinately and thus no further other
  72. environments will be used.  As with the command line parameters, any arguments
  73. that are not given are set to their defaults.  An example of an argument file
  74. is this:
  75. r1020221011  g200
  76. r0120120012  g200
  77. r0102002222  g200
  78. r2312000311  g200
  79. r0203012123  g200
  80. r1310121232 p0  g200
  81. r1320001101 p0  g200
  82. r1033021030 p0  g200
  83.  
  84.    Control keys: Certain keys can be pressed while the program is running to
  85. effect changes in the display.  In noscroll mode, keypresses are checked for
  86. after every mutation and after each screenful of generations.  In scroll mode,
  87. keypresses are checked for after every other generation.
  88. Pressing the 'f' key will freeze the current rules (disable mutation).
  89. 'e' will echo the current rules to the screen.
  90. 's' will toggle between scroll and noscroll mode.
  91. 'm' will cause an immediate mutation.
  92. Pressing any other key will quit the program.
  93.     
  94. The inspiration for this program came from an article that appeared in 
  95. _BYTE_ magazine (too long ago for me to remember the issue!)
  96. Send bug reports, comments and suggestions to John DuBois, john@armory.com
  97.